Skip to content

[Go] Reject OTF group entries whose blockLength is below the fixed fields - #1187

Open
slachiewicz wants to merge 1 commit into
aeron-io:masterfrom
slachiewicz:go-otf-group-block-length-check
Open

slachiewicz wants to merge 1 commit into
aeron-io:masterfrom
slachiewicz:go-otf-group-block-length-check

Conversation

@slachiewicz

Copy link
Copy Markdown
Contributor

Go OTF DecodeGroups took the group blockLength from the wire with no lower bound, so a group header with a zero blockLength and a large numInGroup made it fire per-field callbacks numInGroup times over the same bytes. It now panics, as the other length checks in this decoder do, when numInGroup is above zero and blockLength is below the extent of the fixed fields present at the acting version. Constant fields and composite members newer than the acting version are excluded from that extent, mirroring the Java and C++ checks.

A message root blockLength below the fixed fields is not checked by this change; the Java and C++ OTF decoders check it, and Go can follow separately.

Part of #969.

Verified: the new TestRejectsGroupBlockLengthBelowFields and TestGroupBlockLengthExcludesMembersNewerThanActingVersion fail on master (no panic) and pass here; gocode make passes.

…elds.

A group header with numInGroup above zero and a blockLength smaller than the fields present at the acting version now panics, so entries cannot be decoded from zero bytes. Constant fields and composite members newer than the acting version must stay excluded from the minimum.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant